#include "myhead.h"
int msgid;
//自定义一个结构体存放要发送的内容
struct mymsg
{
	long msgtype;  //消息类型
	char msg[50];  //真实的信息
};
void catchint(int sig)
{
	printf("强行退出程序，会执行循环后面的语句!\n");
	//删除消息队列
	msgctl(msgid,IPC_RMID,NULL);
	//结束整个进程
	exit(0);
}
int main()
{
	struct mymsg smsg;
	struct mymsg rmsg;
	//申请消息队列
	msgid=msgget(98787,IPC_CREAT|IPC_EXCL|0777);
	if(msgid==-1)
	{
		if(errno==EEXIST)
			msgid=msgget(98787,0777);
		else
		{
			perror("申请");
			return -1;
		}
	}
	//我想捕捉SIGINT信号,目的是为了做收尾工作
	signal(SIGINT,catchint);
	while(1)
	{
		bzero(&smsg,sizeof(smsg));
		bzero(&rmsg,sizeof(rmsg));
		printf("从键盘输入要发送的信息-->TO p2！\n");
		scanf("%s",smsg.msg);
		//指定要发送的信息类型
		smsg.msgtype=888;
		msgsnd(msgid,&smsg,sizeof(smsg),0);
		//接收p2回复的信息
		msgrcv(msgid,&rmsg,sizeof(rmsg),666,0);
		printf("p2回复给我的信息是:%s\n",rmsg.msg);
	}
	
}